package com.hevery.validator;

import com.hevery.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * @Author: Hevery
 * @Description: 定义校验类，必须实现接口ConstraintValidator，它有两个泛型，第一个用来表示要验证的注解，第二个表示要验证的数据的类型
 * 注意此处不需要使用@Component来让Spring注入，当Spring发现该类实现了ConstraintValidator接口时，会自动注入该类。
 * @Date: Created on 2017/10/7
 * @Modified By:
 */

public class MyConstraintValidator implements ConstraintValidator<MyConstraint,Object>{

    /**在这个类中可以使用Spring的AutoWired注入需要bean*/
    @Autowired
    private HelloService helloService;
    /**
     * 用于初始化
     * @param myConstraint
     */
    @Override
    public void initialize(MyConstraint myConstraint) {
        System.out.println("my validator init");
    }

    /**
     * 执行真正的校验逻辑
     * @param o
     * @param constraintValidatorContext
     * @return
     */
    @Override
    public boolean isValid(Object o, ConstraintValidatorContext constraintValidatorContext) {

        helloService.greeting("tom");
        return false;
    }
}
